package dtn.news;

import android.os.Bundle;
import android.provider.ContactsContract.CommonDataKinds.Event;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.view.Display;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.view.animation.AccelerateDecelerateInterpolator;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class PageMain extends Activity {

	private ImageView imgDetailTitle;
	private Button btnShorten;
	private Animation aniLTC;
	private Animation aniCTR;
	private Animation aniRTC;
	private Animation aniCTL;
	private Animation aniSD;
	private Animation aniSU;
	private boolean isShorten;
	private Button btnNews;
	private Button btnCareer;
	private Button btnScience;
	private Button btnIntro;
	private boolean isNewsChoose;
	private boolean isCareerChoose;
	private boolean isScienceChoose;
	private boolean isIntroChoose;
	private TextView txtTitle;
	private int widthView;
	private ListView lstNews;
	private ListView lstCareer;
	private ListView lstScience;
	private ImageView imgIntro;
	private final int touchSpace = 50;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.page_main);
		
		//Animation 
		InitAnimation();
		
		//Layout Detail Title
		InitLayoutTitle();
		
		//Init Layout Content
		InitContent();
		
		//Init Menu
		InitMenu();
		
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.page_main, menu);
		return true;
	}
	
	//=================KHỐI HÀM KHỞI TẠO==================
	//Khởi tạo giao diện ảnh tiêu đề
	private void InitLayoutTitle() {
		
		imgDetailTitle = (ImageView) findViewById(R.id.img_detail_title);
		imgDetailTitle.setAnimation(aniSU);
		imgDetailTitle.setAnimation(aniSD);
		btnShorten = (Button) findViewById(R.id.btn_shorten);
		btnShorten.setOnClickListener(shortenClickListener);
		txtTitle = (TextView) findViewById(R.id.txt_title);
	}
	
	//Khởi tạo các list nội dung
	private void InitContent() {
		
		widthView = getWindowManager().getDefaultDisplay().getWidth();
		
		//List News
		lstNews = (ListView) findViewById(R.id.list_news);
		lstNews.setAnimation(aniCTL);
		lstNews.setAnimation(aniRTC);
		lstNews.setAnimation(aniLTC);
		lstNews.setAnimation(aniSD);
		lstNews.setOnTouchListener(lstNewsOnTouchListener);
		isNewsChoose = true;
		
		//List Career
		lstCareer = (ListView) findViewById(R.id.list_career);
		lstCareer.setAnimation(aniRTC);
		lstCareer.setAnimation(aniLTC);
		lstCareer.setAnimation(aniCTR);
		lstCareer.setAnimation(aniCTL);
		lstCareer.setAnimation(aniSD);
		lstCareer.setVisibility(View.GONE);
		lstCareer.setOnTouchListener(lstCareerOnTouchListener);
		
		
		//List Science
		lstScience = (ListView) findViewById(R.id.list_science);
		lstScience.setAnimation(aniRTC);
		lstScience.setAnimation(aniLTC);
		lstScience.setAnimation(aniCTR);
		lstScience.setAnimation(aniSD);
		lstScience.setVisibility(View.GONE);
		lstScience.setOnTouchListener(lstScienceOnTocuhListener);
		
		//Image intro
		imgIntro = (ImageView) findViewById(R.id.img_intro);
		imgIntro.setAnimation(aniSD);
		imgIntro.setVisibility(View.INVISIBLE);
	
	}
	
	//Khởi tạo các nút bấm
	private void InitMenu() {
		//LayoutMenu
		btnNews = (Button) findViewById(R.id.btn_news);
		btnNews.setOnClickListener(btnNewsClickListener);
		
		btnCareer = (Button) findViewById(R.id.btn_career);
		btnCareer.setOnClickListener(btnCareerClickListener);
		
		btnScience = (Button) findViewById(R.id.btn_science);
		btnScience.setOnClickListener(btnScienceClickListener);
		
		btnIntro = (Button) findViewById(R.id.btn_intro);
		btnIntro.setOnClickListener(btnIntroClickListener);		
	}
	
	//Khởi tạo hiệu ứng
	private void InitAnimation() {
		
		//Trượt từ trái vào giữa
		aniLTC = AnimationUtils.loadAnimation(this, R.anim.left_to_center);
        aniLTC.setInterpolator((new AccelerateDecelerateInterpolator()));
        aniLTC.setFillEnabled(true);
        
        //Trượt từ giữa qua phải
        aniCTR = AnimationUtils.loadAnimation(this, R.anim.center_to_right);
        aniCTR.setInterpolator((new AccelerateDecelerateInterpolator()));
        aniCTR.setFillEnabled(true);
        
        //Trượt từ phải vào giữa
        aniRTC = AnimationUtils.loadAnimation(this, R.anim.right_to_center);
        aniRTC.setInterpolator((new AccelerateDecelerateInterpolator()));
        aniCTR.setFillEnabled(true);
        
        //Trượt từ giữa qua trái
        aniCTL = AnimationUtils.loadAnimation(this, R.anim.center_to_left);
        aniCTL.setInterpolator((new AccelerateDecelerateInterpolator()));
        aniCTL.setFillEnabled(true);
        
        //Giãn từ trên xuống
        aniSD = AnimationUtils.loadAnimation(this, R.anim.swipe_down);
        aniSD.setInterpolator((new AccelerateDecelerateInterpolator()));
        aniSD.setFillEnabled(true);
        
        //Thu từ dưới lên
        aniSU = AnimationUtils.loadAnimation(this, R.anim.swipe_up);
        aniSU.setInterpolator((new AccelerateDecelerateInterpolator()));
        aniSU.setFillEnabled(true);
	}
		
	//=================KHỐI HÀM SỰ KIỆN===================
	
	//Nút bấm thu gọn
	private OnClickListener shortenClickListener = new OnClickListener() {

		@Override
		public void onClick(View v) {
			isShorten = !isShorten;
			
			if(isShorten) {
				//Thực hiện animation thu gọn image
				imgDetailTitle.setVisibility(View.GONE);
			}
			else {
				//Thực hiện animationn giãn hình từ trên xuống
				imgDetailTitle.setVisibility(View.VISIBLE);
			}
		}
	};
	
	//Nút bấm tin tức
	private OnClickListener btnNewsClickListener = new OnClickListener() {

		@Override
		public void onClick(View v) {
			if(!isNewsChoose) {
				setOffAllButton();
				
				//Hiệu ứng btnNews
				isNewsChoose = true;
				btnNews.setBackgroundResource(R.drawable.btn_news_down);
				
				//Hiệu ứng của listNews
				lstNews.startAnimation(aniSD);
				setInvisibleView();
				lstNews.setVisibility(View.VISIBLE);
			}
		}
		
	};
	
	//Nút bấm việc làm
	private OnClickListener btnCareerClickListener = new OnClickListener() {

		@Override
		public void onClick(View v) {
			if(!isCareerChoose) {
				setOffAllButton();
				
				//Hiệu ứng btnCareer
				isCareerChoose = true;
				btnCareer.setBackgroundResource(R.drawable.btn_career_down);
				
				//Hiệu ứng lstCareer
				lstCareer.startAnimation(aniSD);
				setInvisibleView();
				lstCareer.setVisibility(View.VISIBLE);
			}
		}

	};
	
	//Nút bấm khoa học
	private OnClickListener btnScienceClickListener = new OnClickListener() {

		@Override
		public void onClick(View v) {
			if(!isScienceChoose) {
				setOffAllButton();
				
				//Hiệu ứng btnScience
				isScienceChoose = true;
				btnScience.setBackgroundResource(R.drawable.btn_science_down);
				
				//Hiệu ứng lstScience
				lstScience.startAnimation(aniSD);
				setInvisibleView();
				lstScience.setVisibility(View.VISIBLE);
			}
		}
	};
	
	//Nút bấm giới thiệu
	private OnClickListener btnIntroClickListener = new OnClickListener() {

		@Override
		public void onClick(View v) {
			if(!isIntroChoose) {
				setOffAllButton();
				
				//Hiệu ứng btnCareer
				isIntroChoose = true;
				btnIntro.setBackgroundResource(R.drawable.btn_intro_down);
				
				//Hiệu ứng imgIntro
				imgIntro.startAnimation(aniSD);
				setInvisibleView();
				imgIntro.setVisibility(View.VISIBLE);
			}
		}
	};
	
	//Sự kiện chạm trên news
	
	//Sự kiện chạm trên listNews
	private OnTouchListener lstNewsOnTouchListener = new OnTouchListener() {

		private float upX;
		private float downX;

		@Override
		public boolean onTouch(View v, MotionEvent event) {
			
			switch(event.getAction()) {
				case MotionEvent.ACTION_DOWN : {
					downX = event.getX();
					break;
				}
				case MotionEvent.ACTION_UP : {
					upX = event.getX();
					
					if(isNewsChoose) {
						if(downX < upX && downX < touchSpace) {
							//Thực hiện trượt trừ News -> Science
							doSwipeLTR(lstNews, lstScience, btnScience, R.drawable.btn_science_down);
							isScienceChoose = true;
						}
						
						if(downX > upX && downX > widthView - touchSpace) {
							//Thực hiện trượt từ News -> Career
							doSwipeRTL(lstNews, lstCareer, btnCareer, R.drawable.btn_career_down);
							isCareerChoose = true;
						}	
						
					}
					
					break;
				}
			}
			return true;
		}
		
	};
	
	//Sự kiện chạm trên listCareer
	
	//Sự kiện chạm trên listCareer
	private OnTouchListener lstCareerOnTouchListener = new OnTouchListener() {

		private float downX;
		private float upX;

		@Override
		public boolean onTouch(View v, MotionEvent event) {
			switch(event.getAction()) {
				case MotionEvent.ACTION_DOWN : {
					downX = event.getX();
					break;
				}
				case MotionEvent.ACTION_UP : {
					upX = event.getX();
					
					if(isCareerChoose) {
						if(downX < upX && downX < touchSpace) {
							//Thực hiện trượt từ Career -> News
							doSwipeLTR(lstCareer, lstNews, btnNews, R.drawable.btn_news_down);
							isNewsChoose = true;
						}
						
						if(downX > upX && downX > widthView - touchSpace) {
							//Thực hiện trượt từ Career -> Science
							doSwipeRTL(lstCareer, lstScience, btnScience, R.drawable.btn_science_down);
							isScienceChoose = true;
						}	
					}
					
					break;
				}
			}
			return true;
		}
	};
	
	//Sự kiện chạm trên listScience
	private OnTouchListener lstScienceOnTocuhListener = new OnTouchListener() {

		private float downX;
		private float upX;

		@Override
		public boolean onTouch(View v, MotionEvent event) {
			switch(event.getAction()) {
				case MotionEvent.ACTION_DOWN : {
					downX = event.getX();
					break;
				}
				case MotionEvent.ACTION_UP : {
					upX = event.getX();
					
					if(isScienceChoose) {
						if(downX < upX && downX < touchSpace) {
							//Thực hiện trượt từ Science -> Career
							doSwipeLTR(lstScience, lstCareer, btnCareer, R.drawable.btn_career_down);
							isCareerChoose = true;
						}
						
						if(downX > upX && downX > widthView - touchSpace) {
							//Thực hiện trượt từ Science -> News
							doSwipeRTL(lstScience, lstNews, btnNews, R.drawable.btn_news_down);
							isNewsChoose = true;
						}
						
					}
					
					break;
				}
			}
			return true;
		}	
	};
	
	//==============KHỐI CÁC HÀM HỖ TRỢ=================
	
	//Tắt tất cả các nút bấm
	private void setOffAllButton() {
		isNewsChoose = false;
		isCareerChoose = false;
		isScienceChoose = false;
		isIntroChoose = false;
		
		btnNews.setBackgroundResource(R.drawable.btn_news);
		btnCareer.setBackgroundResource(R.drawable.btn_career);
		btnScience.setBackgroundResource(R.drawable.btn_science);
		btnIntro.setBackgroundResource(R.drawable.btn_intro);
	}
	
	//Ẩn tất cả các content
	private void setInvisibleView() {
		lstNews.setVisibility(View.GONE);
		lstCareer.setVisibility(View.GONE);
		lstScience.setVisibility(View.GONE);
		imgIntro.setVisibility(View.GONE);
	}
	
	//Xử lý trượt từ trái qua phải
	private void doSwipeLTR(ListView lstCurrent, ListView lstCome, Button btnCome, int idBtnCome) {
		
		//Hiệu ứng 
		lstCurrent.startAnimation(aniCTR);
		setInvisibleView();
		
		lstCome.startAnimation(aniLTC);
		lstCome.setVisibility(View.VISIBLE);

		//Nút bấm
		setOffAllButton();
		btnCome.setBackgroundResource(idBtnCome);
	}
	
	//Xử lý trượt từ phải qua trái
	private void doSwipeRTL(ListView lstCurrent, ListView lstCome, Button btnCome, int idBtnCome) {
		
		//Hiệu ứng 
		lstCurrent.startAnimation(aniCTL);
		setInvisibleView();
		
		lstCome.startAnimation(aniRTC);
		lstCome.setVisibility(View.VISIBLE);
		
		//Nút bấm
		setOffAllButton();
		btnCome.setBackgroundResource(idBtnCome);
	}		
		
}